package controllers.mobile;

import com.aton.util.CacheUtil;
import com.google.common.collect.Lists;

import mobile.secure.MobileApiSecure;
import mobile.vo.Result;
import models.Notice;
import models.User;
import models.User.UserType;
import play.data.validation.Min;
import play.data.validation.Required;
import play.mvc.With;
import vos.NoticeSearchVo;
import vos.Page;

@With(MobileApiSecure.class)
public class NoticeController extends BaseController {

	/**
	 * 查询公告列表
	 * 
	 * @author 刘志远<yuanzhi-2@163.com>
	 * @since 2016年12月6日
	 * @param imei
	 *            设置编码
	 * @param s
	 *            查询实体
	 */
	public static void list(@Required NoticeSearchVo s) {
		handleWrongInput(false);

		s.pageSize = 20;
		User user = getCurrentUser();
		s.roles = Lists.newArrayList(UserType.ALL, user.type);
		// 用户页面只能看到允许显示的公告
		s.isDisplay = true;

		Page<Notice> p = Notice.findByPage(s);
		renderJSON(Result.optSuccessWithData(p));
	}

	/**
	 * 查询单个公告信息
	 * @author 刘志远<yuanzhi-2@163.com>
	 * @since 2016年12月6日
	 * @param id
	 * 			公告id
	 */
	public static void getDetail(@Required @Min(1) long id,@Required String imei) {
		handleWrongInput(false);
		Notice notice = Notice.findById(id);
		// 检查用户是否有权限查看，管理员访问时不进行检查
		User user = getCurrentUser();
		if(notice.role != UserType.ALL && notice.role != user.type){
			renderJSON(Result.resourceNotFound());
		}
		renderJSON(Result.optSuccessWithData(notice));
	}

}
